import Vue from 'vue'
import App from './App.vue'
//三级联动组件---全局组件
import TypeNav from '@/components/TypeNav'
// Vue.component('组件名',组件名)
Vue.component(TypeNav.name, TypeNav)
import Carousel from '@/components/Carousel'
Vue.component(Carousel.name, Carousel)
import Pagination from '@/components/Pagination'
Vue.component(Pagination.name, Pagination)
import { Button, MessageBox } from 'element-ui'
//注册全局组件
Vue.component(Button.name, Button)
//ElementUI注册组件的时候,还有一种写法,挂在原型上
Vue.prototype.$msgbox = MessageBox
Vue.prototype.$alert = MessageBox.alert
//引入路由
import router from '@/router'
//引入仓库
import store from '@/store'
//引入MockServer.js----mock数据
import '@/mock/mockServe'
//引入swiper样式
import 'swiper/css/swiper.css'
//统一接口api文件夹里面全部请求函数
//统一引入
import * as API from '@/api'
//引入图片懒加载插件
import VueLazyload from 'vue-lazyload'
import atm from '@/assets/logo.png'
Vue.use(VueLazyload, {
  // 放入懒加载的图片，就是atm
  loading: atm
})
//引入表单检验插件
import '@/plugins/validate'
new Vue({
  render: h => h(App),
  //全局时间总线$bus配置
  // beforeCreate 函数就是 Vue 实例被创建出来之前，会执行它。在 beforeCreate 生命周期函数执行的时候，Vue实例中的 data 和 methods 中的数据都还没有被初始化。
  beforeCreate() {
    //向外共享Vue的实例对象  固定写法
    Vue.prototype.$bus = this
    // console.log(Vue.prototype.$bus)
    Vue.prototype.$API = API
    // console.log(Vue.prototype.$API)里面是reqAddOrUpdateShopCart，reqAddressInfo等接口
  },
  //注册路由：底下的写法KV一致省略V[router小写]
  //注册路由信息:当这里书写router的时候，组件身上都拥有$route,$router属性
  router,
  //注册仓库:组件实例的身上会多一个属性$store属性
  store
}).$mount('#app')
